package com.dingding.order.processer;

import java.math.BigDecimal;
import java.util.List;

import com.dingding.order.dto.history.HistoryOrderDto;
import com.dingding.order.dto.march.underway.UderWayOrderDto;
import com.dingding.order.dto.pay.paymoney.GetThirdPayAndAccountDto;

/**
 * @Description:订单处理业务（主要针对私家车，出租车，专车相同业务不同实现的提取）
 * @author fengshuonan
 * @date 2016年8月18日 下午5:24:16
 * @version 叮叮搭车
 * @since 2.4
 */
public interface IOrderProcesser {

	/**
	 * @Description:获取订单状态
	 * @param orderId 订单id
	 * @author fengshuonan
	 * @return int (0:无此订单)
	 * @since 2.4
	 */
	public int getOrderStatus(String orderId);
	
	/**
	 * @Description:获取第三方支付金额和账户支付金额
	 * @param orderId 订单id
	 * @author fengshuonan
	 * @since 2.4
	 */
	public GetThirdPayAndAccountDto getThirdPayAndAccountPay(BigDecimal accountRemain,String orderId);
	
	
	/**
	 * @Description:获取进行中订单
	 * @param userId 用户id
	 * @author fengshuonan
	 * @since 2.4
	 */
	public List<UderWayOrderDto> getUnderWayOrders(String userId,Integer clientType);
	
	
	/**
	 * @Description:获取用户的历史订单
	 * @param userId 用户id
	 * @param orderStatus 订单状态（5 已完成  6已取消）
	 * @author fengshuonan
	 * @return List<HistoryOrderDto>
	 * @since 2.4
	 */
	public List<HistoryOrderDto> getHistoryOrders(String userId,int orderStatus,int currentPage,int pageSize,Integer userType);
	
	
	/**
	 * @Description:获取用户的历史订单
	 * @param userId 用户id
	 * @author YHQ
	 * @return List<HistoryOrderDto>
	 * @since 2.5.5
	 */
	public List<HistoryOrderDto> completeAndCancelOrder(String userId,int currentPage,int pageSize,Integer userType);
	
	/**
	 * @Description:获取发起呼叫的用的电话号码
	 * @param orderId 订单id
	 * @param userId 发起呼叫人的用户id
	 * @author fengshuonan
	 * @since 2.4
	 */
	public String getCallUserTell(String orderId,String userId);
	
	/**
	 * @Description: 通过订单获取对方用户的手机号
	 * @param orderId 订单id
	 * @param userId 发起人的用户id
	 * @author fengshuonan
	 * @since 2.4
	 */
	public String getCalledUserTell(String orderId,String userId);
	
	/**
	 * @Description:通过用户id获取用户的电话号码
	 * @author fengshuonan
	 * @since 2.4
	 */
	public String getUserTellByUserId(String userId);

}
